package com.xucy.springboot.designmodel.creational.simplefactory;

/**
 * @Author xucy
 * @Date 2019-07-14 11:03
 * @Description 生产课程的工厂 ，根据用户需要返回所需课程
 **/

public class VideoFactory {
    /**
     * 简单的工厂实现
     *
     * @Author xucy
     * @Date 11:04 2019-07-14
     * @param
     * @return
     */
    public Video produceVideo(String type){
        if("java".equals(type)){
            return new JavaVideo();
        }else if("go".equals(type)){
            return new GoVideo();
        }

        return null;
    }

    /**
     * 根据传入的类 返回所需课程，提高简单工厂的复用性，符合开闭原则
     *
     * @Author xucy
     * @Date 11:07 2019-07-14
     * @param
     * @return
     */
    public Video classProduceVideo(Class cla){
        try{
            Video video=(Video) Class.forName(cla.getName()).newInstance();
            return video;
        }catch (Exception e){

            e.printStackTrace();
            return null;
        }

    }
}
